package c2stage_20220203.ccc050包装类;

/**
 * 装箱：把基本数据类型转换为对应的包装类类型
 * 拆箱：把包装类类型转换为对应的基本数据类型
 * 拆箱和装箱的操作，本质上都是java为了实现一切皆对象的思想
 */
public class ccc005integer赋值 {
    public static void main(String[] args) {
        // 下面是装箱，把基本数据类型100，转化成integer包装类型
        Integer x0 = Integer.valueOf(100);
        // 自动装箱，是jdk5以后系统自动简化的
        // 下面是自动装箱，把数据从基本类型转换为包装类型
        // Integer就是包装类型
        Integer x = 100;
        System.out.println(x);
        // --------------------------------------------------
        // --------------------------------------------------
        // --------------------------------------------------
        // 拆箱：把包装类类型转换为对应的基本数据类型
        x += 200;
        // 这里自动执行了装箱和拆箱的过程，具体过程是
        x = x.intValue() + 100;
        // intvalue就是拆箱
        // x.intValue()把包装类型转化为数据类型
        // 数据类型和100相加后
        // 再执行了一次装箱操作，赋值给x
        // --------------------------------------------------
        // --------------------------------------------------
        // --------------------------------------------------
        // 有这样一种情况：
        Integer s = null;
        // s+=100;
        // 上面这条命令报错，
        // 因为执行的过程中，出现了自动拆箱和装箱，
        // 而对于数据类型为null的对象，我们是无法执行该命令的――出现空指针
        // 所以，
        // 对于引用类型，默认先进行不为null的判断
        if (s == null) {
            System.out.println("null出现");
        } else {
            System.out.println(s + "---ok");
        }
    }
}
